'use strict';
module.exports = {
	/**
	 * 图片违规检测示例
	 * @url template/openapi/weixin/pub/imgSecCheck 前端调用的url参数地址
	 * data 请求参数 说明
	 * res 返回参数说明
	 * @params {Number} code 错误码，0表示成功
	 * @params {String} msg 详细信息
	 */
	main: async (event) => {
		let { data = {}, userInfo, util, originalParam } = event;
		let { config, vk , db, _ } = util;
		let { uid } = data;
		let res = { code : 0, msg : 'ok' };
		// 业务逻辑开始-----------------------------------------------------------
		let { buffer } = data;
		/**
		 * 实际开发中，图片可能是多张图，比如多达9张图
		 * 如果在一个请求中循环检测，可能会超时。
		 * 方案1：前端选择完图片就自动一张一张检测和上传（即9张图会有9个请求）
		 * 方案2：使用Promise.all
		 * 特别注意：目前微信小程序的这个API有1M大小的限制。（此为微信官方限制）
		 */
		let dcloud_appid = [originalParam.context.APPID]
		let clientIP = originalParam.context.CLIENTIP
		let platform = originalParam.context.PLATFORM
		let tokenRes = await vk.request({
			url:`https://developer.toutiao.com/api/apps/v2/token`,
			method:"POST",
			data:{
				appid: config.uni[platform].oauth.toutiao.appid,
				secret: config.uni[platform].oauth.toutiao.appsecret,
				grant_type: 'client_credential'
			},
			header: {
				'Content-type': 'application/json',
			}
		});
		if(tokenRes.err_no != 0){
			res.code = tokenRes.err_no
			res.msg = tokenRes.err_tips
			return res
		}
		// let buffer_str = "data:image/png;base64," +buffer.toString('base64')
		let imageRes = await vk.request({
			url:`https://developer.toutiao.com/api/apps/censor/image`,
			method:"POST",
			data:{
				app_id: config.uni[platform].oauth.toutiao.appid,
				access_token: tokenRes.data.access_token,
				image_data: buffer
			},
			header: {
				'Content-type': 'application/json',
			}
		});
		if(imageRes.error != 0){
			res.code = tokenRes.error
			res.msg = tokenRes.message
			return res
		}
		
		for (var i = 0; i < imageRes.predicts.length; i++) {
			if(imageRes.predicts[i].hit){
				return {
					code: -1,
					msg: '图片含有违法违规内容！'
				}
			}
		}
		
		// 业务逻辑结束-----------------------------------------------------------
		return res;
	}
}
